function timeout(ms){
    return new Promise((res,rej)=>{
       setTimeout(res,ms,'done');
    });
}

timeout(10000).then(value=>{
    console.log(value)
})
// 10秒输出done 下面有个会报错单不影响10秒输出done ： 说明promose 对象 内部语法有错误 ，不会终止进程终止脚本，吃掉错误，不会影响代码块之外的内容


let promise = new Promise((res,rej)=>{
    console.log('Promise');
    res();
});

promise.then(()=>{
    console.log('resolved')
});
console.log('nihao!')
// 依次输出Promise nihao! resolved done 
// Promise 创建后就会立即执行，then方法制定的回调函数 将在当前脚本所有同步任务执行完才执行

const p1 = new Promise(function (resolve, reject) {
    setTimeout(() => reject(new Error('fail')), 5000)
  })
  
  const p2 = new Promise(function (resolve, reject) {
    setTimeout(() => resolve(p1), 1000)
  })
  
 
  p2
    .then(result => console.log(result))
    .catch(error => console.log(error))
  

    new Promise((resolve, reject) => {
        resolve(1);
        console.log(2);
      }).then(r => {
        console.log(r);
      });
      // 2
      // 1

      new Promise((resolve, reject) => {
        return resolve('皮卡丘是我！');
        // 后面的语句不会执行
        console.log(2);
      }).then(r=>{
          console.log(r)
      })